home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / javax / swing / JLayeredPane.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  5.6 KB  |  360 lines

  1. package javax.swing;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Graphics;
  7. import java.awt.LayoutManager;
  8. import java.awt.Rectangle;
  9. import java.util.ArrayList;
  10. import java.util.Hashtable;
  11. import javax.accessibility.Accessible;
  12. import javax.accessibility.AccessibleContext;
  13.  
  14. public class JLayeredPane extends JComponent implements Accessible {
  15.    public static final Integer DEFAULT_LAYER = new Integer(0);
  16.    public static final Integer PALETTE_LAYER = new Integer(100);
  17.    public static final Integer MODAL_LAYER = new Integer(200);
  18.    public static final Integer POPUP_LAYER = new Integer(300);
  19.    public static final Integer DRAG_LAYER = new Integer(400);
  20.    public static final Integer FRAME_CONTENT_LAYER = new Integer(-30000);
  21.    public static final String LAYER_PROPERTY = "layeredContainerLayer";
  22.    private Hashtable<Component, Integer> componentToLayer;
  23.    private boolean optimizedDrawingPossible = true;
  24.  
  25.    public JLayeredPane() {
  26.       this.setLayout((LayoutManager)null);
  27.    }
  28.  
  29.    private void validateOptimizedDrawing() {
  30.       boolean var1 = false;
  31.       synchronized(this.getTreeLock()) {
  32.          Object var3 = null;
  33.  
  34.          for(Component var7 : this.getComponents()) {
  35.             Integer var10 = null;
  36.             if ((var7 instanceof JInternalFrame || var7 instanceof JComponent && (var10 = (Integer)((JComponent)var7).getClientProperty("layeredContainerLayer")) != null) && (var10 == null || !var10.equals(FRAME_CONTENT_LAYER))) {
  37.                var1 = true;
  38.                break;
  39.             }
  40.          }
  41.       }
  42.  
  43.       if (var1) {
  44.          this.optimizedDrawingPossible = false;
  45.       } else {
  46.          this.optimizedDrawingPossible = true;
  47.       }
  48.  
  49.    }
  50.  
  51.    protected void addImpl(Component var1, Object var2, int var3) {
  52.       int var4 = DEFAULT_LAYER;
  53.       if (var2 instanceof Integer) {
  54.          var4 = (Integer)var2;
  55.          this.setLayer(var1, var4);
  56.       } else {
  57.          var4 = this.getLayer(var1);
  58.       }
  59.  
  60.       int var5 = this.insertIndexForLayer(var4, var3);
  61.       super.addImpl(var1, var2, var5);
  62.       var1.validate();
  63.       var1.repaint();
  64.       this.validateOptimizedDrawing();
  65.    }
  66.  
  67.    public void remove(int var1) {
  68.       Component var2 = this.getComponent(var1);
  69.       super.remove(var1);
  70.       if (var2 != null && !(var2 instanceof JComponent)) {
  71.          this.getComponentToLayer().remove(var2);
  72.       }
  73.  
  74.       this.validateOptimizedDrawing();
  75.    }
  76.  
  77.    public void removeAll() {
  78.       Component[] var1 = this.getComponents();
  79.       Hashtable var2 = this.getComponentToLayer();
  80.  
  81.       for(int var3 = var1.length - 1; var3 >= 0; --var3) {
  82.          Component var4 = var1[var3];
  83.          if (var4 != null && !(var4 instanceof JComponent)) {
  84.             var2.remove(var4);
  85.          }
  86.       }
  87.  
  88.       super.removeAll();
  89.    }
  90.  
  91.    public boolean isOptimizedDrawingEnabled() {
  92.       return this.optimizedDrawingPossible;
  93.    }
  94.  
  95.    public static void putLayer(JComponent var0, int var1) {
  96.       Integer var2 = new Integer(var1);
  97.       var0.putClientProperty("layeredContainerLayer", var2);
  98.    }
  99.  
  100.    public static int getLayer(JComponent var0) {
  101.       Integer var1;
  102.       return (var1 = (Integer)var0.getClientProperty("layeredContainerLayer")) != null ? var1 : DEFAULT_LAYER;
  103.    }
  104.  
  105.    public static JLayeredPane getLayeredPaneAbove(Component var0) {
  106.       if (var0 == null) {
  107.          return null;
  108.       } else {
  109.          Container var1;
  110.          for(var1 = var0.getParent(); var1 != null && !(var1 instanceof JLayeredPane); var1 = ((Component)var1).getParent()) {
  111.          }
  112.  
  113.          return (JLayeredPane)var1;
  114.       }
  115.    }
  116.  
  117.    public void setLayer(Component var1, int var2) {
  118.       this.setLayer(var1, var2, -1);
  119.    }
  120.  
  121.    public void setLayer(Component var1, int var2, int var3) {
  122.       Integer var4 = this.getObjectForLayer(var2);
  123.       if (var2 == this.getLayer(var1) && var3 == this.getPosition(var1)) {
  124.          this.repaint(var1.getBounds());
  125.       } else {
  126.          if (var1 instanceof JComponent) {
  127.             ((JComponent)var1).putClientProperty("layeredContainerLayer", var4);
  128.          } else {
  129.             this.getComponentToLayer().put(var1, var4);
  130.          }
  131.  
  132.          if (var1.getParent() != null && var1.getParent() == this) {
  133.             int var5 = this.insertIndexForLayer(var1, var2, var3);
  134.             this.setComponentZOrder(var1, var5);
  135.             this.repaint(var1.getBounds());
  136.          } else {
  137.             this.repaint(var1.getBounds());
  138.          }
  139.       }
  140.    }
  141.  
  142.    public int getLayer(Component var1) {
  143.       Integer var2;
  144.       if (var1 instanceof JComponent) {
  145.          var2 = (Integer)((JComponent)var1).getClientProperty("layeredContainerLayer");
  146.       } else {
  147.          var2 = (Integer)this.getComponentToLayer().get(var1);
  148.       }
  149.  
  150.       return var2 == null ? DEFAULT_LAYER : var2;
  151.    }
  152.  
  153.    public int getIndexOf(Component var1) {
  154.       int var3 = this.getComponentCount();
  155.  
  156.       for(int var2 = 0; var2 < var3; ++var2) {
  157.          if (var1 == this.getComponent(var2)) {
  158.             return var2;
  159.          }
  160.       }
  161.  
  162.       return -1;
  163.    }
  164.  
  165.    public void moveToFront(Component var1) {
  166.       this.setPosition(var1, 0);
  167.    }
  168.  
  169.    public void moveToBack(Component var1) {
  170.       this.setPosition(var1, -1);
  171.    }
  172.  
  173.    public void setPosition(Component var1, int var2) {
  174.       this.setLayer(var1, this.getLayer(var1), var2);
  175.    }
  176.  
  177.    public int getPosition(Component var1) {
  178.       int var7 = 0;
  179.       int var3 = this.getComponentCount();
  180.       int var6 = this.getIndexOf(var1);
  181.       if (var6 == -1) {
  182.          return -1;
  183.       } else {
  184.          int var4 = this.getLayer(var1);
  185.  
  186.          for(int var2 = var6 - 1; var2 >= 0; --var2) {
  187.             int var5 = this.getLayer(this.getComponent(var2));
  188.             if (var5 != var4) {
  189.                return var7;
  190.             }
  191.  
  192.             ++var7;
  193.          }
  194.  
  195.          return var7;
  196.       }
  197.    }
  198.  
  199.    public int highestLayer() {
  200.       return this.getComponentCount() > 0 ? this.getLayer(this.getComponent(0)) : 0;
  201.    }
  202.  
  203.    public int lowestLayer() {
  204.       int var1 = this.getComponentCount();
  205.       return var1 > 0 ? this.getLayer(this.getComponent(var1 - 1)) : 0;
  206.    }
  207.  
  208.    public int getComponentCountInLayer(int var1) {
  209.       int var5 = 0;
  210.       int var3 = this.getComponentCount();
  211.  
  212.       for(int var2 = 0; var2 < var3; ++var2) {
  213.          int var4 = this.getLayer(this.getComponent(var2));
  214.          if (var4 == var1) {
  215.             ++var5;
  216.          } else if (var5 > 0 || var4 < var1) {
  217.             break;
  218.          }
  219.       }
  220.  
  221.       return var5;
  222.    }
  223.  
  224.    public Component[] getComponentsInLayer(int var1) {
  225.       int var5 = 0;
  226.       Component[] var6 = new Component[this.getComponentCountInLayer(var1)];
  227.       int var3 = this.getComponentCount();
  228.  
  229.       for(int var2 = 0; var2 < var3; ++var2) {
  230.          int var4 = this.getLayer(this.getComponent(var2));
  231.          if (var4 == var1) {
  232.             var6[var5++] = this.getComponent(var2);
  233.          } else if (var5 > 0 || var4 < var1) {
  234.             break;
  235.          }
  236.       }
  237.  
  238.       return var6;
  239.    }
  240.  
  241.    public void paint(Graphics var1) {
  242.       if (this.isOpaque()) {
  243.          Rectangle var2 = var1.getClipBounds();
  244.          Color var3 = this.getBackground();
  245.          if (var3 == null) {
  246.             var3 = Color.lightGray;
  247.          }
  248.  
  249.          var1.setColor(var3);
  250.          if (var2 != null) {
  251.             var1.fillRect(var2.x, var2.y, var2.width, var2.height);
  252.          } else {
  253.             var1.fillRect(0, 0, this.getWidth(), this.getHeight());
  254.          }
  255.       }
  256.  
  257.       super.paint(var1);
  258.    }
  259.  
  260.    protected Hashtable<Component, Integer> getComponentToLayer() {
  261.       if (this.componentToLayer == null) {
  262.          this.componentToLayer = new Hashtable(4);
  263.       }
  264.  
  265.       return this.componentToLayer;
  266.    }
  267.  
  268.    protected Integer getObjectForLayer(int var1) {
  269.       Integer var2;
  270.       switch (var1) {
  271.          case 0:
  272.             var2 = DEFAULT_LAYER;
  273.             break;
  274.          case 100:
  275.             var2 = PALETTE_LAYER;
  276.             break;
  277.          case 200:
  278.             var2 = MODAL_LAYER;
  279.             break;
  280.          case 300:
  281.             var2 = POPUP_LAYER;
  282.             break;
  283.          case 400:
  284.             var2 = DRAG_LAYER;
  285.             break;
  286.          default:
  287.             var2 = new Integer(var1);
  288.       }
  289.  
  290.       return var2;
  291.    }
  292.  
  293.    protected int insertIndexForLayer(int var1, int var2) {
  294.       return this.insertIndexForLayer((Component)null, var1, var2);
  295.    }
  296.  
  297.    private int insertIndexForLayer(Component var1, int var2, int var3) {
  298.       int var7 = -1;
  299.       int var8 = -1;
  300.       int var9 = this.getComponentCount();
  301.       ArrayList var10 = new ArrayList(var9);
  302.  
  303.       for(int var11 = 0; var11 < var9; ++var11) {
  304.          if (this.getComponent(var11) != var1) {
  305.             var10.add(this.getComponent(var11));
  306.          }
  307.       }
  308.  
  309.       int var5 = var10.size();
  310.  
  311.       for(int var4 = 0; var4 < var5; ++var4) {
  312.          int var6 = this.getLayer((Component)var10.get(var4));
  313.          if (var7 == -1 && var6 == var2) {
  314.             var7 = var4;
  315.          }
  316.  
  317.          if (var6 < var2) {
  318.             if (var4 == 0) {
  319.                var7 = 0;
  320.                var8 = 0;
  321.             } else {
  322.                var8 = var4;
  323.             }
  324.             break;
  325.          }
  326.       }
  327.  
  328.       if (var7 == -1 && var8 == -1) {
  329.          return var5;
  330.       } else {
  331.          if (var7 != -1 && var8 == -1) {
  332.             var8 = var5;
  333.          }
  334.  
  335.          if (var8 != -1 && var7 == -1) {
  336.             var7 = var8;
  337.          }
  338.  
  339.          if (var3 == -1) {
  340.             return var8;
  341.          } else {
  342.             return var3 > -1 && var7 + var3 <= var8 ? var7 + var3 : var8;
  343.          }
  344.       }
  345.    }
  346.  
  347.    protected String paramString() {
  348.       String var1 = this.optimizedDrawingPossible ? "true" : "false";
  349.       return super.paramString() + ",optimizedDrawingPossible=" + var1;
  350.    }
  351.  
  352.    public AccessibleContext getAccessibleContext() {
  353.       if (this.accessibleContext == null) {
  354.          this.accessibleContext = new AccessibleJLayeredPane(this);
  355.       }
  356.  
  357.       return this.accessibleContext;
  358.    }
  359. }
  360.